package trabalho.odonto.fachada;

import java.util.ArrayList;

import trabalho.odonto.classesbasicas.Consulta;
import trabalho.odonto.classesbasicas.Despesas;
import trabalho.odonto.classesbasicas.Doutor;
import trabalho.odonto.classesbasicas.Funcionario;
import trabalho.odonto.classesbasicas.Paciente;
import trabalho.odonto.exception.ConsultaException;
import trabalho.odonto.exception.DespesasException;
import trabalho.odonto.exception.DoutorException;
import trabalho.odonto.exception.FuncionarioException;
import trabalho.odonto.exception.PacienteException;
import trabalho.odonto.negocio.ControladorConsulta;
import trabalho.odonto.negocio.ControladorDespesas;
import trabalho.odonto.negocio.ControladorDoutor;
import trabalho.odonto.negocio.ControladorFuncionario;
import trabalho.odonto.negocio.ControladorPaciente;

public class Fachada implements IFachada{

	private ControladorDoutor doutor;
	private ControladorPaciente paciente;
	private ControladorFuncionario funcionario;
	private ControladorDespesas despesas;
	private ControladorConsulta consultas;
	
	private static IFachada instancia;
	
	private Fachada(){
		doutor = new ControladorDoutor();
		paciente = new ControladorPaciente();
		funcionario = new ControladorFuncionario();
		despesas = new ControladorDespesas();
		consultas = new ControladorConsulta();
	}
	
	public static IFachada getObterInstancia(){
		if(instancia == null){
			instancia = new Fachada();
		}
		return instancia;
	}
	
	@Override
	public void cadastrarDoutor(Doutor d) throws DoutorException {
		doutor.cadastrarDoutor(d);		
	}

	@Override
	public void removerDoutor(Doutor d) throws DoutorException {
		doutor.removerDoutor(d);		
	}

	@Override
	public void atualizarDoutor(Doutor d) throws DoutorException {
		doutor.atualizarDoutor(d);		
	}

	@Override
	public ArrayList consultarDoutor() {
		// TODO Auto-generated method stub
		return null;
	}
	
	public void cadastrarPaciente(Paciente p)throws PacienteException{
		paciente.cadastrarPaciente(p);
	}
	
	public void removerPaciente(Paciente p)throws PacienteException{
		paciente.removerPaciente(p);
	}
	
	public void atualizarPaciente(Paciente p)throws PacienteException{
		paciente.atualizarPaciente(p);
	}
	
	public ArrayList consultarPaciente(){
		return null;
	}

	public void cadastrarFuncionario(Funcionario f)throws FuncionarioException{
		funcionario.cadastrarFuncionario(f);
	}
	
	public void removerFuncionario(Funcionario f)throws FuncionarioException{
		funcionario.removerFuncionario(f);
	}
	
	public void atualizarFuncionario(Funcionario f)throws FuncionarioException{
		funcionario.atualizarFuncionario(f);
	}
	
	public ArrayList consultarFuncionario(){
		return null;
	}
	
	public void cadastrarDespesas(Despesas d)throws DespesasException{
		despesas.cadastrarDespesas(d);
	}
	
	public void removerDespesas(Despesas d)throws DespesasException{
		despesas.removerDespesas(d);
	}
	
	public void atualizarDespesas(Despesas d)throws DespesasException{
		despesas.atualizarDespesas(d);
	}
	
	public ArrayList consultarDespesas(){
		return null;
	}

	@Override
	public void cadastrarConsulta(Consulta con) throws ConsultaException {
		consultas.cadastrarConsulta(con);
		
	}

	@Override
	public void removerConsulta(Consulta con) throws ConsultaException {
		consultas.removerConsulta(con);
		
	}

	@Override
	public void atualizarConsulta(Consulta con) throws ConsultaException {
		consultas.atualizarConsulta(con);
		
	}

	@Override
	public ArrayList consultarConsulta() {
		return consultas.consultarConsulta();
	}
	
}